//<editor-fold defaultstate="collapsed" desc="VARIABLES GLOBALES">
var grid;
var datos = [];
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="INICIALIZACIONES">
function activarDialogos() {
    $("#dlgNuevo").dialog({
        autoOpen: false,
        height: 'auto',
        width: '600',
        modal: true,
        resizable: false,
        show: 'slide',
        hide: 'fade',
        closeOnEscape: false,       
        open: function() {
            $(".ui-dialog").addClass("ui-dialog-shadow");
            $('.ui-dialog-titlebar-close', $(this).parent()).hide();
        }
    });
    $("#dlgEliminar").dialog({
        autoOpen: false,
        height: 'auto',
        width: '400',
        modal: true,
        resizable: false,
        show: 'slide',
        hide: 'fade',
        closeOnEscape: false,       
        open: function() {
            $(".ui-dialog").addClass("ui-dialog-shadow");
            $('.ui-dialog-titlebar-close', $(this).parent()).hide();
        }
    });
    $("#dlgModificar").dialog({
        autoOpen: false,
        height: 'auto',
        width: '600',
        modal: true,
        resizable: false,
        show: 'slide',
        hide: 'fade',
        closeOnEscape: false,       
        open: function() {
            $(".ui-dialog").addClass("ui-dialog-shadow");
            $('.ui-dialog-titlebar-close', $(this).parent()).hide();
        }
    });
    $("#dlgBuscar").dialog({
        autoOpen: false,
        height: 'auto',
        width: '550',
        modal: true,
        resizable: false,
        show: 'slide',
        hide: 'fade',
        closeOnEscape: false,       
        open: function() {
            $(".ui-dialog").addClass("ui-dialog-shadow");
            $('.ui-dialog-titlebar-close', $(this).parent()).hide();
        }
    });
}


function formatter(row, cell, value, columnDef, dataContext) {
    return "<a href='#' onclick='eliminarProducto(" + row + ")'><image alt='borrar producto' title='borrar' src='resources/images/delete.png'/></a>" +
            "&nbsp;&nbsp;" +
            "<a href='#' onclick='modificarProducto(" + row + ")'><image alt='modificar producto' title='modificar' src='resources/images/edit.png'/></a>";
}

function inicializarGrid() {
    var columnas = [
        {name: 'Nombre', id: 'nombre', field: 'nombre', width: 260, cssClass: 'izquierda'},
        {name: 'Descripcion', id: 'descripcion', field: 'descripcion', width: 320, cssClass: 'izquierda'},
        {name: 'Coste &euro;', id: 'coste', field: 'coste', width: 80, cssClass: 'centro'},
        {name: 'Precio &euro;', id: 'precio', field: 'precio', width: 80, cssClass: 'centro'},
        {name: 'IVA %', id: 'iva', field: 'iva', width: 60, cssClass: 'centro'},
        {name: 'Proveedor', id: 'nombreProveedor', field: 'nombreProveedor', width: 242, cssClass: 'izquierda'},
        {name: 'Almacen', id: 'nombreAlmacen', field: 'nombreAlmacen', width: 200, cssClass: 'izquierda'},
        {name: '', id: 'id', field: 'id', width: 60, formatter: formatter}
    ];
    var opciones = {
        enableCellNavigation: true,
        enableColumnReorder: true,
        rowHeight: 35
    };

    grid = new Slick.Grid("#tabla", datos, columnas, opciones);
    grid.onClick.subscribe(function(e, args) {
        mostrarDatos(args);
    });
    grid.setSelectionModel(new Slick.RowSelectionModel());
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="GESTION DE DIÁLOGOS">
function buscarProducto() {
    $("#dlgBuscar").dialog('open');
}

function nuevoProducto() {
    $("#dlgNuevo").dialog('open');
}

function modificarProducto(row) {
    $("#dlgModificar").dialog('open');
}

function eliminarProducto(row) {
    $('#dlgEliminar').find('#id').val(datos[row].id);
    $('#dlgEliminar').find('#producto').html(datos[row].nombre);
    $("#dlgEliminar").dialog('open');
}

function cerrarDialogo(dialogo) {
    $(dialogo).dialog('close');
    $('.err').html('');
    $('.loading').hide();
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="OPERACIONES CRUD EMPLEADO">
function buscar() {
    $('#formBuscar').find('#opcion').val('buscar');
    var formulario = new FormData($('#formBuscar')[0]);
    $('.loading').show();
    $.ajax({
        type: "POST",
        url: "/Phama/productos.do",
        data: formulario,
        processData: false,
        contentType: false,
        error: function(jqXHR, textStatus, errorMessage) {
            $('.err').html(errorMessage);
            $('.loading').hide();
        },
        success: function(data) {
            datos = $.parseJSON(data);
            grid.setData(datos);
            grid.invalidate();
            resetearFormularioPrincipal();
            $('.err').html('');
            $('#dlgBuscar').dialog('close');
            $('.loading').hide();
        }
    });
}

function grabar() {
    $('#formNuevo').find('#opcion').val('grabar');
    var formulario = new FormData($('#formNuevo')[0]);
    $('.loading').show();
    $.ajax({
        type: "POST",
        url: "/Phama/productos.do",
        data: formulario,
        processData: false,
        contentType: false,
        error: function(jqXHR, textStatus, errorMessage) {
            $('#erroresNuevo').html(errorMessage);
            $('.loading').hide();
        },
        success: function(data) {
            var errores = $('#erroresNuevo', $(data));
            if (errores.text() !== '') {
                $('#erroresNuevo').html(errores);
            } else {
                if (data.indexOf('excepcion') > 0) {
                    $('#erroresNuevo').html(data);
                } else {
                    $('#erroresNuevo').html('');
                    buscar();
                    $('#dlgNuevo').dialog('close');
                    $('#formNuevo')[0].reset();
                }
            }
            $('.loading').hide();
        }
    });
}

function getProducto(productoId) {
    $('#formGetProducto').find('#opcion').val('getProducto');
    $('#formGetProducto').find('#id').val(productoId);
    var formulario = new FormData($('#formGetProducto')[0]);
    $('.loading').show();
    $.ajax({
        type: "POST",
        url: "/Phama/productos.do",
        data: formulario,
        processData: false,
        contentType: false,
        error: function(jqXHR, textStatus, errorMessage) {
            $('#erroresModificar').html(errorMessage);
            $('.loading').hide();
        },
        success: function(data) {
            var errores = $('#erroresModificar', $(data));
            if (errores.text() !== '') {
                $('#erroresModificar').html(errores);
            } else {
                $('#erroresModificar').html('');
                buscar();
                $('#dlgEliminar').dialog('close');
                $('#formEliminar')[0].reset();
            }
            $('.loading').hide();
        }
    });
}

function eliminar() {
    $('#formEliminar').find('#opcion').val('eliminar');
    var formulario = new FormData($('#formEliminar')[0]);
    $('.loading').show();
    $.ajax({
        type: "POST",
        url: "/Phama/productos.do",
        data: formulario,
        processData: false,
        contentType: false,
        error: function(jqXHR, textStatus, errorMessage) {
            $('#erroresEliminar').html(errorMessage);
            $('.loading').hide();
        },
        success: function(data) {
            var errores = $('#erroresEliminar', $(data));
            if (errores.text() !== '') {
                $('#erroresEliminar').html(errores);
            } else {
                buscar();
                $('#dlgEliminar').dialog('close');
                $('#formEliminar')[0].reset();
                resetearFormularioPrincipal();
            }
            $('.loading').hide();
        }
    });
}

function modificar() {
    $('#formModificar').find('#opcion').val('modificar');
    var formulario = new FormData($('#formModificar')[0]);
    $('.loading').show();
    $.ajax({
        type: "POST",
        url: "/Phama/productos.do",
        data: formulario,
        processData: false,
        contentType: false,
        error: function(jqXHR, textStatus, errorMessage) {
            $('#erroresModificar').html(errorMessage);
            $('.loading').hide();
        },
        success: function(data) {
            var errores = $('#erroresModificar', $(data));
            if (errores.text() !== '') {
                $('#erroresModificar').html(errores);
            } else {
                if (data.indexOf('excepcion') > 0) {
                    $('#erroresModificar').html(data);
                } else {
                    buscar();
                    $('#dlgModificar').dialog('close');
                }
            }
            $('.loading').hide();
        }
    });
}
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="FUNCIONES AUXILIARES">
function resetearFormularioPrincipal() {
    
    $('#erroresModificar').html('');
    $('.modId').val('');
    $('.modNombre').val('');
    $('.modDescripcion').val('');
    $('.modCoste').val('');
    $('.modPrecio').val('');
    $('.modIva').val('');
    $('.nombreProveedor').val('');
    $('.nombreAlmacen').val('');
    $('.sAlmacen').val('');
    $('.sProveedor').val('');
}

function mostrarDatos(args) {
    var producto = datos[args.row];
    
    $('.modId').val(producto.id);
    $('.modNombre').val(producto.nombre);
    $('.modDescripcion').val(producto.descripcion);
    $('.modCoste').val(producto.coste);
    $('.modPrecio').val(producto.precio);
    $('.modIva').val(producto.iva);
    $('.nombreProveedor').val(producto.nombreProveedor);
    $('.nombreAlmacen').val(producto.nombreAlmacen);
    $('.sAlmacen').val(producto.idAlmacen);
    $('.sProveedor').val(producto.idProveedor);
}
//</editor-fold>